package com.awanp3.nimbus.wms.fg.domain.bo;

import com.awanp3.nimbus.wms.fg.domain.WmsCountingOrderInfo;
import com.awanp3.nimbus.common.core.validate.AddGroup;
import com.awanp3.nimbus.common.core.validate.EditGroup;
import com.awanp3.nimbus.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 盘点单业务对象 wms_counting_order_info
 *
 * @author 20014170
 * @date 2025-09-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsCountingOrderInfo.class, reverseConvertGenerate = false)
public class WmsCountingOrderInfoBo extends BaseEntity {

    /**
     * 主键
     */
    private Long id;

    /**
     * 盘点单号
     */
    @NotBlank(message = "盘点单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String countingOrderNo;

    /**
     * 盘点行项目号
     */
    @NotBlank(message = "盘点行项目号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String countingOrderItem;

    /**
     * 盘点类型(1物料 2Bin位)
     */
    @NotBlank(message = "盘点类型(1物料 2Bin位)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String countingType;

    /**
     * 物料号
     */
    @NotBlank(message = "物料号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String materialCode;

    /**
     * 物料描述
     */
    @NotBlank(message = "物料描述不能为空", groups = { AddGroup.class, EditGroup.class })
    private String materialDesc;

    /**
     * 基本单位
     */
    @NotBlank(message = "基本单位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String baseUnit;

    /**
     * 库存数量
     */
    @NotNull(message = "库存数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long stockQty;

    /**
     * 已盘数量
     */
    @NotNull(message = "已盘数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long countedQty;

    /**
     * 工厂
     */
    @NotBlank(message = "工厂不能为空", groups = { AddGroup.class, EditGroup.class })
    private String plantCode;

    /**
     * 库位
     */
    @NotBlank(message = "库位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String locationCode;

    /**
     * 货位
     */
    @NotBlank(message = "货位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String binCode;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;

    /**
     * 状态（0正常 1停用 2开启 3关闭）
     */
    @NotBlank(message = "状态（0正常 1停用 2开启 3关闭）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;


}
